#ifndef __0F807CB2_B675_4dc1_97D9_3887E5DEB4B9__
#define __0F807CB2_B675_4dc1_97D9_3887E5DEB4B9__

/////////////////////////////////////////////////////////////////////////////////////////
// 
namespace xos
{
    // 
    // event interface
    // 
    class i_event
    {
    public:
        // 
        // event wait type.
        // 
        enum enumWaitRet
        {
            // 
            // wait ret. 
            // 
            EVENT_WAIT_OBJECT_0,

            // 
            // wait timeout
            // 
            EVENT_WAIT_TIMEOUT,

            // 
            // wait failed
            // 
            EVENT_WAIT_FAILED,

            // 
            // wait for ever ...
            // 
            EVENT_WAIT_INFINITE = 0xffffffff
        };

    public:
        virtual ~i_event(){}

    public:
        // 
        // wait for event ...
        // 
        virtual unsigned long wait( unsigned long ulMilliseconds ) = 0;

        // 
        // set event type.
        // 
        virtual int set_event_type( bool bManuleReset ) = 0;

        // 
        // reset event
        // 
        virtual int reset_event() = 0;

        // 
        // set event
        // 
        virtual int set_event() = 0;

        // 
        // release
        // 
        virtual int release() = 0;
    };
}

#endif // __0F807CB2_B675_4dc1_97D9_3887E5DEB4B9__
